package Inteligencia;

import Naves.*;
import Juego.*;
import TDALista.*;
import TDAPila.*;

//INTELIGENCIA QUE SE ENCARGA DE MOVER LAS NAVES ENEMIGAS SEGUN LOS PARAMETROS ESTABLECIDOS.
public class enemigosAI extends Thread {
		Gui juego;
		// CREA UN OBJETO UNICO QUE SERA RELACIONADO CON EL JUEGO, DONDE MAS TARDE EL JUEGO UTILIZARA PARA
		// TRASLADAR LAS NAVES DE UN LADO HACIA OTRO DE MANERA RANDOM.
		public enemigosAI(Gui j){
			juego=j;
		}
		public void run(){ 
			
			Stack<Position<NavesEnemiga>> naveseliminar=new LinkedStack<Position<NavesEnemiga>>();
			while(juego.getUsuario().EstaVivo()){
			try {
				Thread.sleep(50);
			} catch (InterruptedException e) {}
			
		// PARA CADA ENEMIGO DE LA LISTA DE ENEMIGOS DEL JUEGO, SI ESTA VIVO, LA MUEVE SEGUN LOS PARAMETROS ESTABLECIDOS.	
			for(Position<NavesEnemiga> e:juego.getListaEnemigos())
				if(e.element().estaVivo())
				{e.element().Mover();}
				else{naveseliminar.push(e);}
		
		// METODO QUE SIRVE PARA EVITAR EL CONFLICTO ENTRE HILOS.
			while(!naveseliminar.isEmpty())
				try{
				juego.SacarEnemigo(naveseliminar.pop());
				}catch(EmptyStackException e){}					
		}
	}

}
